//导入文件处理模块和路径模块
const fs = require("fs");
const path = require("path");
//文件夹下子文件(文件夹/文件)层层删除函数
const removeDirFun = (dirPath) => {
    //首先判断文件路径是否存在
    //fs.existsSync(path)以同步的方法检测目录是否存在。如果目录存在 返回 true， 如果目录不存在 返回false
    //获取该文件夹下的所有子文件
    var files = fs.readdirSync(dirPath);
    //files就是存储该文件夹下的所有子文件name的数组
    //声明child变量存放子文件路径
    var childPath = null;
    //该文件夹下存在子文件
    if (files.length > 0) {
        files.forEach((child) => {
            //拼接路径
            childPath = `${dirPath}/${child}`;
            //isDirectory()是检查一个对象是否是文件夹。返回值是boolean类型的。如果是则返回true，否则返回false。
            //调用方法为： 对象.isDirectory() 无需指定参数。
            //同步方法 fs.statSync();判断一个目录或文件夹是否存在
            //命令指定删除文件夹下的子文件也是文件夹
            if (fs.statSync(childPath).isDirectory()) {
                //递归
                removeDirFun(childPath);
                //删除文件夹
                fs.rmdirSync(childPath);
            } else {
                //如果子文件都是文件则删除主文件夹下的所有子文件
                fs.unlinkSync(childPath);
            }
        });
    }
};
//处理接收的命令进行对应删除文件夹操作
const deleteDir = (command) => {
    //将命令转换成数组以空格隔开
    const arr = command.split(" ");
    if (arr.length === 1) {
        process.send('请输入文件夹名--');
    }
    if (arr.length === 2) {
        const name = arr[1];
        var dirPath = path.resolve(__dirname, `../resource/${name}`);
        //判断指定删除文件夹是否存在
        if (fs.existsSync(dirPath)) {
            //删除文件夹下的子文件
            removeDirFun(dirPath);
            //删除文件夹
            fs.rmdir(dirPath, (err) => {
                if (!err) {
                    process.send('删除成功--');
                }
            });
        } else {
            process.send('文件夹不存在--');
        }

    }
};
// deleteDir();
//接收父进程传过来的信息
process.on("message", deleteDir);